Otázka č. 15 - Meziprocesorová komunikace
- Výměna dat mezi dvěma nebo více procesy či vlákny
- Komunikace může probíhat i mezi počítači v síti
- Současné OS nabízejí celou škálu prostředků
- Tyto prostředky se liší svou rychlostí, způsobem použití
- anglicky Inter-Process Communication (IPC)
Proč je potřeba?
- Ve výpočetně náročných úlohách je vhodné využít všechna jádra a mikroprocesory počítače
- Složité výpočty a operace tak můžeme rozdělit mezi více procesů či vláken
- Ty pak pomocí IPC mohou provádět operace nad daty společně
Dělení meziprocesové komunikace
- Zasílání zpráv
- Synchronizace
- Sdílená paměť
- Vzdálené volání procedur
Klasifikace komunikačních prostředků
- Spoluúčast jádra – jestli se účastí jádro nebo ne o Jádro se komunikace neúčastní o Data proudí přes jádro tj. jsou minimálně 2x kopírována
- Vnitřní struktura dat – formát přenášených dat o Proudově orientované datovody - data tvoří jediný nečleněný proud o Zprávově orientované - data jsou organizována do zpráv
- Směrování přenášených dat o Všesměrové - z jednoho procesu do více procesů o Dostředné - z více procesů do jednoho procesu o Jedno směrné o Dvousměrné
- Přenášený objem dat( přenosová rychlost ) o Malé( kB/s ) - fronty zpráv a signály o Střední( desítky kB-MB/s ) - roury a sokety o Velké( stovky MB - GB/s ) - sdílená paměť
- Transparnentnost použití
Typy meziprocesové komunikace
Soubor
- Nejjednodušší výměna dat mezi soubory
- Dočasné soubory
- Všechny procesy mohou zapisovat -> mohou si vzájemně škodit
Výměna dat
- Data jsou uložena na nepojmenovaný soubor
- Jeden proces zapisuje
- Druhý z něj čte
- Po předání informací jsou data ze souboru odstraněna
Signály
- Zpráva, která má o něčem informovat ostatní procesy
- Nepoužívá se pro přenos dat mezi procesy
- Lze poslat jen vlastním procesům – potomkům
Zasílání zpráv
- Univerzálnější než signály
- Mezi procesy lze přenášet data
Sdílená paměť
- Procesy jsou odděleny (mají svou vlastní paměť)
- Vlákna mají sdílenou paměť záměrně
- Pokud chtějí procesy komunikovat dostanou procesy stejnou paměť, kterou sdílí – sdílená paměť
- Při zápisu problém souběhu –když oba chtějí zapisovat – řeší se zamykáním (synchronizační prvky)
Roura
- Je klasickým komunikačním prostředkem OS Unix
- Jednosměrným datovodem (jeden zapisuje, druhý čte)
- Vhodný především k výměně malých a středních objemů dat mezi dvěma procesy, vlákny, programy
- V případě obousměrného přenosu je nutno použít dvojici rour
- Používá vyrovnávací paměť (buffer)
- Data se vyměňují skrze speciální soubor typu roura
- 2 Typy
- Nepojmenovaná roura
- Nemají vlastní identifikátor ,,nejsou pojmenované"
- Tudíž nemohou být použity libovolnými procesy, ale pouze procesy, které rouru vytvořili, nebo jejich potomky
- Pojmenovaná roura
- Má vlastní identifikátor ,,je pojmenovaná“
- Používá se pro přenos dat mezi procesy jež nejsou příbuzné
- Nepojmenovaná roura
Soket
- Síťový komunikační prostředek
- Umožňuje připojení přes počítačovou síť
- Na rozdíl od ostatních probíhá výměna dat v RAM paměti
- Na rozdíl od roury umí obousměrnou komunikaci(oba procesy zapisují i čtou)
- Umožňují navázat 2 typy spojení
- Datagramové - zprávově orientované(neposkytují záruku úspěšného doručení ani pořadí)
- Proudové - obousměrný datovod
- Údaje v soketu
- IP adresa a port serveru
- IP adresa a port klienta
- Použitý protokol pro komunikaci - většinou TCP nebo UDP
Spojení
- Otevření půlsoketu serverem se svojí IP adresou a portu – nabídne potenciální spojení
- Klient vyšle požadavek na spojení, který obsahuje identifikaci serveru (adresu, port, protokol)
- Pokud je na specifikovaném místě nalezen soket, jenž čeká na spojení dojde ke vzniku spojení( vzniká tzv. relace )
- Dojde k duplikaci půlsoketu, aby se mohl připojit další klient
Fronta zpráv
- Zprávově orientovaným komunikačním prostředkem
- Umožňuje cílenou i všesměrovou výměnu zpráv
- Zprávy jsou nezbytné u OS klient-server, ale jsou užívány i v jiných systémech
Obsahuje
- Frontu, do které se ukládají zprávy
- Funkci pro přijetí zpráv
- Funkci odesílání zpráv
Obsah zprávy
- Hlavička - informace
- Tělo – data
Výměna dat
- Vysílající proces přidává do fronty zprávy
- Vysílající proces se blokuje pokud je fronta plná
- Přijímací proces bere zprávy z fronty
- Přijímací proces se blokuje není-li ve frontě žádná použitelná zpráva
Vzdálené volání procedur
- Umožňuje programu vykonat kód na jiném místě, než je umístěn volající program
- Vzdáleně volaná procedura může přijímat parametry
- Vzdáleně volaná procedura může též hodnoty vracet
- Jedná se tedy o zprávově orientovaný obousměrný komunikační prostředek
Příklad
- provedení složitějšího matematického výpočtu výkonnějším počítačem, dostupným skrze síť